#include <stdio.h>
#include <utmp.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

void show_info(struct utmp *);

#define SHOWHOST

int main(){
	struct utmp current_record;
	int utmpfd;
	int reclen = sizeof(current_record);

	if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1){
		perror(UTMP_FILE);		//UTMP_FILE is in utmp.h
		exit(1);
	}
	while (read(utmpfd, &current_record, reclen) == reclen){
		show_info(&current_record);
	}
	close(utmpfd);
	return 0;
}

//display components in utmp file
void show_info(struct utmp * utbufp){
	printf("%-8.8s", utbufp->ut_name);	//the logname
	printf(" ");
	printf("%-8.8s", utbufp->ut_line); //the tty
	printf(" ");
	printf("%10ld", utbufp->ut_time);  //the login time
	printf(" ");
	#ifdef SHOWHOST
		printf("(%s)", utbufp->ut_host); //the host
	#endif
		printf("\n");
}
